package edu.neu.swc.cloud.dao;

import edu.neu.swc.cloud.domain.EquipCata;
import edu.neu.swc.cloud.domain.ProductCata;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface CategoryDao {

    /**
     * 找到所有设备类别
     * @return
     */
    List<EquipCata> findAllEqu();

    /**
     * 找到所有产品类别
     * @return
     */
    List<ProductCata> findAllPro();

    /**
     * 添加产品类型
     * @param productCata
     */
    void addProCate(ProductCata productCata);

    /**
     * 添加设备类型
     * @param equipCata
     */
    void addEquipCate(EquipCata equipCata);

    /**
     * 依据编号删除设备类别
     * @param equ_ca_id
     */
    void deleteEquCateById(int equ_ca_id);

    /**
     * 依据编号删除产品类别
     * @param pro_ca_id
     */
    void deleteProCateById(int pro_ca_id);

    /**
     * 修改产品类别
     * @param cata
     */
    void updateProCate(ProductCata cata);

    /**
     * 修改设备类别
     * @param cata
     */
    void updateEquCate(EquipCata cata);

    /**
     * 依据ID寻找设备类别
     * @param equ_ca_id
     * @return
     */
    EquipCata findEquCateById(int equ_ca_id);

    /**
     * 依据类别ID寻找
     * @param pro_ca_id
     * @return
     */
    ProductCata findProCateById(int pro_ca_id);

    /**
     * 多字段查询设备类别
     * @param equipCata
     * @return
     */
    List<EquipCata> findEquCateByCon(EquipCata equipCata);

    /**
     * 多字段查询
     * @param productCata
     * @return
     */
    List<ProductCata> findProCateByCon(ProductCata productCata);

    /**
     * 依据条件查询产品类别记录数
     * @param pro_ca_name
     * @return
     */
    int getProductTypeCounts(@Param("pro_ca_name") String pro_ca_name);

    /**
     * 依据条件查询产品类别信息
     * @param pro_ca_name
     * @param pageStart
     * @param pageSize
     * @return
     */
    List<ProductCata> findProductTypeByQuery(@Param("pro_ca_name") String pro_ca_name,
                                             @Param("pageStart") int pageStart,
                                             @Param("pageSize") int pageSize);

    /**
     * 按照产品类别名称查找产品类别信息
     * @param pro_ca_name
     * @return
     */
    ProductCata findProCateByName(String pro_ca_name);

    /**
     * 依据条件获取记录数目
     * @param eq_ca_name
     * @return
     */
    int getEquipTypeCounts(@Param("eq_ca_name") String eq_ca_name);

    /**
     * 依据条件获取记录信息
     * @param eq_ca_name
     * @param pageStart
     * @param pageSize
     * @return
     */
    List<EquipCata> findEquipTypeByQuery(@Param("eq_ca_name") String eq_ca_name,
                                           @Param("pageStart") int pageStart,
                                           @Param("pageSize") int pageSize);

    /**
     * 依据名称找到满足条件的记录
     * @param eq_ca_name
     * @return
     */
    EquipCata findEquCateByName(String eq_ca_name);
}
